package com.ruoyi.system.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonGetter;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 用户信息VO对象
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
@Data
public class TUserVo
{
    /** 主键ID */
    private Long id;

    /** 用户唯一id */
    @Excel(name = "用户唯一id")
    private String uid;

    /** 用户名 */
    @Excel(name = "用户名")
    private String name;

    /** 昵称 */
    @Excel(name = "昵称")
    private String displayName;

    /** 性别 */
    @Excel(name = "性别")
    private Integer gender;

    /** 头像 URL */
    @Excel(name = "头像 URL")
    private String portrait;

    /** 手机 */
    @Excel(name = "手机")
    private String mobile;

    /** 邮箱 */
    @Excel(name = "邮箱")
    private String email;

    /** 地址 */
    @Excel(name = "地址")
    private String address;

    /** 公司信息 */
    @Excel(name = "公司信息")
    private String company;

    /** 用户类型 0 普通 1 机器人 */
    @Excel(name = "用户类型", readConverterExp = "0=普通,1=机器人")
    private Long type;

    /** 注册/更新时间 时间戳 */
    @Excel(name = "注册/更新时间")
    private Long dt;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd")
    private LocalDate createtime;

    /** 删除标记（0正常 1删除） */
    @Excel(name = "删除标记", readConverterExp = "0=正常,1=删除")
    private Long deleted;

    /** 用户状态：0 正常；1 被禁言，2 被封禁 */
    @Excel(name = "用户状态", readConverterExp = "0=正常,1=被禁言,2=被封禁")
    private Integer userStatus;

    /** 用户状态描述 */
    private String userStatusText;

    // 在线状态
    private Integer online;

    // 在线状态
    private String ip;
    // 最后在线时间
    private String lastTime;
    // 封禁时间
    private String banTime;
    @Excel(name = "注册时间", readConverterExp = "0=正常,1=删除")
    private String regTime;
    /**
     * 获取用户状态描述
     */
    @JsonGetter("userStatusText")
    public String getUserStatusText() {
        if (userStatus == null) {
            return "正常";
        }
        switch (userStatus) {
            case 0:
                return "正常";
            case 1:
                return "被禁言";
            case 2:
                return "被封禁";
            default:
                return "未知";
        }
    }
}
